package Armas;

import javax.swing.ImageIcon;

import Disparos.Disparo;
import General.Elemento;
import General.Juego;

public abstract class Arma extends Elemento {

	protected int velocidadDisparo;
	protected int poderAtaque;
	protected int rango;
	protected int costo;
	protected Juego game;
	protected boolean colisiono;
	
	/**
	 * Devuelve el costo del arma.
	 * @return un entero que indica el costo del arma.
	 */
	public int getCosto()
	{
		return costo;
	}

	/**
	 * Devuelve la velocidad de disparo del arma.
	 * @return un entero que indica la velocidad de disparo del arma.
	 */
	public int getVelocidadDiparo()
	{
		return velocidadDisparo;	
	}

	/**
	 * Devuelve el poder de ataque del arma.
	 * @return un entero que indica el poder de ataque del arma.
	 */
	public int getPoderAtaque()
	{
		return poderAtaque;
	}

	/**
	 * Retorna el rango que posee el arma para disparar.
	 * @return un entero que indica el rango.
	 */
	public int getRango()
	{
		return rango;
	}
	
	/**
	 * Setea el valor de la variable colisiono en true.
	 */
	public void colisiono()
	{
		colisiono = true;
	}

	/**
	 * Metodo abstracto. Cada arma especializada posee un tipo de 
	 * disparo determinado.
	 * @return un objeto de tipo disparo.
	 */
	public abstract Disparo disparar();

	/**
	 * Metodo abstracto. Cada arma especifica agrega y ejecuta un disparo 
	 * especifico.
	 */
	public abstract void run();
	
	public void destruir(){
		ImageIcon aux = new ImageIcon(getClass().getResource("/Imagenes/explosion2.gif"));
		aux.getImage().flush();
		EG.setImagen(aux);
		try {
			this.sleep(300);
			} 
		catch (InterruptedException e) {}
		game.eliminarArma(this);
	}
	
}
